shmctl
Section: System Calls (2)
Index
Return to Main Contents
NAME
shmctl - shared memory control operations
SYNTAX
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmctl (shmid, cmd, buf)
int shmid, cmd;
struct shmid_ds *buf;
DESCRIPTION
The
system call
provides a variety of shared memory
control operations as specified by
cmd.
The following
cmds
are available:
- IPC_STAT
-
Place the current value of each member
of the data structure associated with
shmid
into the structure pointed to by
buf.
The contents of this structure are defined in
- IPC_SET
-
Set the value of the following members
of the data structure associated with
shmid
to the corresponding value found
in the structure pointed to by
buf:
shm_perm.uid
shm_perm.gid
shm_perm.mode /* only low 9 bits */
-
This
cmd
can only be executed by a process
that has an effective user ID equal to
either that of super user or to the value of
shm_perm.uid
in the data structure associated with
shmid.
- IPC_RMID
-
Remove the shared memory identifier specified by
shmid
from the system and destroy the shared
memory segment and data structure
associated with it. This
cmd
can only be executed by a process that
has an effective user ID equal to
either that of super user or to the value of
shm_perm.uid
in the data structure associated with
shmid.
- SHM_LOCK
-
Lock the shared memory segment specified by
shmid
in memory.
This
cmd
can only be executed by a process that has an effective usr ID equal to
super user.
- SHM_UNLOCK
-
Unlock the shared memory segment specified by
shmid.
This
cmd
can only be executed by a process that has an effective usr ID equal to
super user.
RETURN VALUE
Upon successful completion, a value of 0 is returned.
Otherwise, a value of -1 is returned and
errno
is set to indicated the error.
DIAGNOSTICS
The
system call
will fail if one or more of the following are true:
- [EINVAL]
-
The
shmid
is not a valid shared memory identifier.
- [EINVAL]
-
The
cmd
is not a valid command.
- [EACCES]
-
The
cmd
is equal to IPC_STAT
and read permission is
denied to the calling process. For further information, see
- [EPERM]
-
The
cmd
is equal to IPC_RMID or IPC_SET
and the effective user ID of the
calling process is not equal to that of
super user and it is not equal to the value of
shm_perm.uid
in the data structure associated with
shmid.
- [EPERM]
-
The
cmd
is equal to SHM_LOCK
or SHM_UNLOCK
and the effective user ID
of the calling process is not equal to that of superuser.
- [EINVAL]
-
The
cmd
is equal to SHM_LOCK
and the shared memory segment is currently locked by
this process.
- [EINVAL]
-
The
cmd
is equal to SHM_UNLOCK
and the shared memory segment specified by
shmid
is not currently locked in memory by
this process.
- [EFAULT]
-
The
buf
points to an illegal address.
SEE ALSO
shmget(2), shmop(2)
BUGS
The System V shared memory functions are implemented at user level on top
of the mmap(2) interface. Not all the System V functionality is
implemented.
Index
- NAME
-
- SYNTAX
-
- DESCRIPTION
-
- RETURN VALUE
-
- DIAGNOSTICS
-
- SEE ALSO
-
- BUGS
-
This document was created by
man2html,
using the manual pages.
Time: 04:51:43 GMT, January 31, 2023